--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Node / ReticulumProjects / Sideband.git / files / sbapp / kivymd / uix / filemanager / filemanager.py
Displaying Raw • Download
sbapp/kivymd/uix/filemanager/filemanager.py 2dcc759c88f3f2471ffcf6146721200a16aadede (2dcc759c) Text, 25.37 KB
T8b949e"""
Components/FileManager
======================
A simple manager for selecting directories and files.
Usage
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
.. code-block:: python
path = os.path.expanduser("~") # path to the directory that will be opened in the file manager
file_manager = MDFileManager(
exit_manager=self.exit_manager, # function called when the user reaches directory tree root
select_path=self.select_path, # function called when selecting a file/directory
)
file_manager.show(path)
.. image:: https://github.com/HeaTTheatR/KivyMD-data/raw/master/gallery/kivymddoc/file-manager.png
:align: center
.. warning:: Be careful! To use the `'/'` path on Android devices, you need
special permissions. Therefore, you are likely to get an error.
Or with ``preview`` mode:
.. code-block:: python
file_manager = MDFileManager(
exit_manager=self.exit_manager,
select_path=self.select_path,
preview=True,
)
.. image:: https://github.com/HeaTTheatR/KivyMD-data/raw/master/gallery/kivymddoc/file-manager-preview.png
:align: center
.. warning:: The `preview` mode is intended only for viewing images and will
not display other types of files.
Example
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
.. code-block:: python
import os
from kivy.core.window import Window
from kivy.lang import Builder
from kivymd.app import MDApp
from kivymd.uix.filemanager import MDFileManager
from kivymd.toast import toast
KV = '''
MDBoxLayout:
orientation: "vertical"
MDTopAppBar:
title: "MDFileManager"
left_action_items: [["menu", lambda x: None]]
elevation: 3
MDFloatLayout:
MDRoundFlatIconButton:
text: "Open manager"
icon: "folder"
pos_hint: {"center_x": .5, "center_y": .5}
on_release: app.file_manager_open()
'''
class Example(MDApp):
def __init__(self, **kwargs):
super().__init__(**kwargs)
Window.bind(on_keyboard=self.events)
self.manager_open = False
self.file_manager = MDFileManager(
exit_manager=self.exit_manager, select_path=self.select_path
)
def build(self):
self.theme_cls.theme_style = "Dark"
self.theme_cls.primary_palette = "Orange"
return Builder.load_string(KV)
def file_manager_open(self):
self.file_manager.show(os.path.expanduser("~")) # output manager to the screen
self.manager_open = True
def select_path(self, path: str):
'''
It will be called when you click on the file name
or the catalog selection button.
:param path: path to the selected directory or file;
'''
self.exit_manager()
toast(path)
def exit_manager(self, *args):
'''Called when the user reaches the root of the directory tree.'''
self.manager_open = False
self.file_manager.close()
def events(self, instance, keyboard, keycode, text, modifiers):
'''Called when buttons are pressed on the mobile device.'''
if keyboard in (1001, 27):
if self.manager_open:
self.file_manager.back()
return True
Example().run()
.. versionadded:: 1.0.0
Added a feature that allows you to show the available disks first, then the
files contained in them. Works correctly on: `Windows`, `Linux`, `OSX`, `Android`.
Not tested on `iOS`.
.. code-block:: python
def file_manager_open(self):
self.file_manager.show_disks()
.. image:: https://github.com/HeaTTheatR/KivyMD-data/raw/master/gallery/kivymddoc/file-manager-show-disks.png
:align: center
"""
Te6edf3__all__ Tff7b72= Tb4b4b4(Ta5d6ff"Ta5d6ffMDFileManagerTa5d6ff"Tb4b4b4,Tb4b4b4)
Tff7b72import T7ee787locale
Tff7b72import T7ee787os
Tff7b72import T7ee787re
Tff7b72from T7ee787typing Tff7b72import Te6edf3ListTb4b4b4, Te6edf3TupleTb4b4b4, Te6edf3Union
Tff7b72from T7ee787kivy Tff7b72import Te6edf3platform
Tff7b72from T7ee787kivyT7ee787.T7ee787clock Tff7b72import Te6edf3Clock
Tff7b72from T7ee787kivyT7ee787.T7ee787factory Tff7b72import Te6edf3Factory
Tff7b72from T7ee787kivyT7ee787.T7ee787lang Tff7b72import Te6edf3Builder
Tff7b72from T7ee787kivyT7ee787.T7ee787metrics Tff7b72import Te6edf3dp
Tff7b72from T7ee787kivyT7ee787.T7ee787properties Tff7b72import Tb4b4b4(
Te6edf3BooleanPropertyTb4b4b4,
Te6edf3ColorPropertyTb4b4b4,
Te6edf3ListPropertyTb4b4b4,
Te6edf3NumericPropertyTb4b4b4,
Te6edf3ObjectPropertyTb4b4b4,
Te6edf3OptionPropertyTb4b4b4,
Te6edf3StringPropertyTb4b4b4,
Tb4b4b4)
Tff7b72from T7ee787kivyT7ee787.T7ee787uixT7ee787.T7ee787behaviors Tff7b72import Te6edf3ButtonBehavior
Tff7b72from T7ee787kivyT7ee787.T7ee787uixT7ee787.T7ee787modalview Tff7b72import Te6edf3ModalView
Tff7b72from T7ee787kivymd Tff7b72import Te6edf3images_pathTb4b4b4, Te6edf3uix_path
Tff7b72from T7ee787kivymdT7ee787.T7ee787uixT7ee787.T7ee787behaviors Tff7b72import Te6edf3CircularRippleBehavior
Tff7b72from T7ee787kivymdT7ee787.T7ee787uixT7ee787.T7ee787boxlayout Tff7b72import Te6edf3MDBoxLayout
Tff7b72from T7ee787kivymdT7ee787.T7ee787uixT7ee787.T7ee787button Tff7b72import Te6edf3MDFloatingActionButton
Tff7b72from T7ee787kivymdT7ee787.T7ee787uixT7ee787.T7ee787fitimage Tff7b72import Te6edf3FitImage
Tff7b72from T7ee787kivymdT7ee787.T7ee787uixT7ee787.T7ee787list Tff7b72import Te6edf3BaseListItem
Tff7b72from T7ee787kivymdT7ee787.T7ee787uixT7ee787.T7ee787relativelayout Tff7b72import Te6edf3MDRelativeLayout
Tff7b72with Tffa657openTb4b4b4(
Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffjoinTb4b4b4(Te6edf3uix_pathTb4b4b4, Ta5d6ff"Ta5d6fffilemanagerTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6fffilemanager.kvTa5d6ff"Tb4b4b4)Tb4b4b4, Te6edf3encodingTff7b72=Ta5d6ff"Ta5d6ffutf-8Ta5d6ff"
Tb4b4b4) Tff7b72as Te6edf3kv_fileTb4b4b4:
Te6edf3BuilderTff7b72.Td2a8ffload_stringTb4b4b4(Te6edf3kv_fileTff7b72.Td2a8ffreadTb4b4b4(Tb4b4b4)Tb4b4b4)
Tff7b72class T56d364BodyManagerTb4b4b4(Te6edf3MDBoxLayoutTb4b4b4)Tb4b4b4:
T8b949e"""Base class for folders and files icons."""
Tff7b72class T56d364BodyManagerWithPreviewTb4b4b4(Te6edf3MDBoxLayoutTb4b4b4)Tb4b4b4:
T8b949e"""
Base class for folder icons and thumbnails images in ``preview`` mode.
"""
Tff7b72class T56d364IconButtonTb4b4b4(Te6edf3CircularRippleBehaviorTb4b4b4, Te6edf3ButtonBehaviorTb4b4b4, Te6edf3FitImageTb4b4b4)Tb4b4b4:
T8b949e"""Folder icons/thumbnails images in ``preview`` mode."""
Tff7b72class T56d364ModifiedOneLineIconListItemTb4b4b4(Te6edf3BaseListItemTb4b4b4)Tb4b4b4:
Te6edf3_txt_left_pad Tff7b72= Te6edf3NumericPropertyTb4b4b4(Ta5d6ff"Ta5d6ff72dpTa5d6ff"Tb4b4b4)
Te6edf3_txt_top_pad Tff7b72= Te6edf3NumericPropertyTb4b4b4(Ta5d6ff"Ta5d6ff16dpTa5d6ff"Tb4b4b4)
Te6edf3_txt_bot_pad Tff7b72= Te6edf3NumericPropertyTb4b4b4(Ta5d6ff"Ta5d6ff15dpTa5d6ff"Tb4b4b4)
Te6edf3_num_lines Tff7b72= T79c0ff1
Tff7b72def Tff7b72__init__Tb4b4b4(Tff7b72selfTb4b4b4, Tff7b72*Te6edf3argsTb4b4b4, Tff7b72*Tff7b72*Te6edf3kwargsTb4b4b4)Tb4b4b4:
Tffa657superTb4b4b4(Tb4b4b4)Tff7b72.Td2a8ff__init__Tb4b4b4(Tff7b72*Te6edf3argsTb4b4b4, Tff7b72*Tff7b72*Te6edf3kwargsTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffheight Tff7b72= Te6edf3dpTb4b4b4(T79c0ff48Tb4b4b4)
Tff7b72class T56d364MDFileManagerTb4b4b4(Te6edf3MDRelativeLayoutTb4b4b4)Tb4b4b4:
T8b949e"""
Implements a modal dialog with a file manager.
For more information, see in the
:class:`~kivymd.uix.relativelayout.MDRelativeLayout` class documentation.
:Events:
`on_pre_open`:
Called before the MDFileManager is opened.
`on_open`:
Called when the MDFileManager is opened.
`on_pre_dismiss`:
Called before the MDFileManager is closed.
`on_dismiss`:
Called when the MDFileManager is closed.
"""
Te6edf3icon Tff7b72= Te6edf3StringPropertyTb4b4b4(Ta5d6ff"Ta5d6ffcheckTa5d6ff"Tb4b4b4, Te6edf3deprecatedTff7b72=Tff7b72TrueTb4b4b4)
T8b949e"""
Icon that will be used on the directory selection button.
.. deprecated:: 1.1.0
Use :attr:`icon_selection_button` instead.
:attr:`icon` is an :class:`~kivy.properties.StringProperty`
and defaults to `check`.
"""
Te6edf3icon_selection_button Tff7b72= Te6edf3StringPropertyTb4b4b4(Ta5d6ff"Ta5d6ffcheckTa5d6ff"Tb4b4b4)
T8b949e"""
Icon that will be used on the directory selection button.
.. versionadded:: 1.1.0
.. code-block:: python
MDFileManager(
...
icon_selection_button="pencil",
)
.. image:: https://github.com/HeaTTheatR/KivyMD-data/raw/master/gallery/kivymddoc/file-manager-icon-selection-button.png
:align: center
:attr:`icon_selection_button` is an :class:`~kivy.properties.StringProperty`
and defaults to `check`.
"""
Te6edf3background_color_selection_button Tff7b72= Te6edf3ColorPropertyTb4b4b4(Tff7b72NoneTb4b4b4)
T8b949e"""
Background color in (r, g, b, a) or string format of the current
directory/path selection button.
.. versionadded:: 1.1.0
.. code-block:: python
MDFileManager(
...
background_color_selection_button="brown",
)
.. image:: https://github.com/HeaTTheatR/KivyMD-data/raw/master/gallery/kivymddoc/file-manager-background-color-selection-button.png
:align: center
:attr:`background_color_selection_button` is an :class:`~kivy.properties.ColorProperty`
and defaults to `None`.
"""
Te6edf3background_color_toolbar Tff7b72= Te6edf3ColorPropertyTb4b4b4(Tff7b72NoneTb4b4b4)
T8b949e"""
Background color in (r, g, b, a) or string format of the file manager toolbar.
.. versionadded:: 1.1.0
.. code-block:: python
MDFileManager(
...
background_color_toolbar="brown",
)
.. image:: https://github.com/HeaTTheatR/KivyMD-data/raw/master/gallery/kivymddoc/file-manager-background-color-toolbar.png
:align: center
:attr:`background_color_toolbar` is an :class:`~kivy.properties.ColorProperty`
and defaults to `None`.
"""
Te6edf3icon_folder Tff7b72= Te6edf3StringPropertyTb4b4b4(Ta5d6fffTa5d6ff"Tffd700{Te6edf3images_pathTffd700}Ta5d6fffolder.pngTa5d6ff"Tb4b4b4)
T8b949e"""
Icon that will be used for folder icons when using ``preview = True``.
.. code-block:: python
MDFileManager(
...
preview=True,
icon_folder="path/to/icon.png",
)
.. image:: https://github.com/HeaTTheatR/KivyMD-data/raw/master/gallery/kivymddoc/file-manager-icon-folder.png
:align: center
:attr:`icon` is an :class:`~kivy.properties.StringProperty`
and defaults to `check`.
"""
Te6edf3icon_color Tff7b72= Te6edf3ColorPropertyTb4b4b4(Tff7b72NoneTb4b4b4)
T8b949e"""
Color in (r, g, b, a) or string format of the folder icon when the
:attr:`preview` property is set to False.
.. versionadded:: 1.1.0
.. code-block:: python
MDFileManager(
...
preview=False,
icon_color="brown",
)
.. image:: https://github.com/HeaTTheatR/KivyMD-data/raw/master/gallery/kivymddoc/file-manager-icon-color.png
:align: center
:attr:`icon_color` is an :class:`~kivy.properties.ColorProperty`
and defaults to `None`.
"""
Te6edf3exit_manager Tff7b72= Te6edf3ObjectPropertyTb4b4b4(Tff7b72lambda Te6edf3xTb4b4b4: Tff7b72NoneTb4b4b4)
T8b949e"""
Function called when the user reaches directory tree root.
:attr:`exit_manager` is an :class:`~kivy.properties.ObjectProperty`
and defaults to `lambda x: None`.
"""
Te6edf3select_path Tff7b72= Te6edf3ObjectPropertyTb4b4b4(Tff7b72lambda Te6edf3xTb4b4b4: Tff7b72NoneTb4b4b4)
T8b949e"""
Function, called when selecting a file/directory.
:attr:`select_path` is an :class:`~kivy.properties.ObjectProperty`
and defaults to `lambda x: None`.
"""
Te6edf3ext Tff7b72= Te6edf3ListPropertyTb4b4b4(Tb4b4b4)
T8b949e"""
List of file extensions to be displayed in the manager.
For example, `['.py', '.kv']` - will filter out all files,
except python scripts and Kv Language.
:attr:`ext` is an :class:`~kivy.properties.ListProperty`
and defaults to `[]`.
"""
Te6edf3search Tff7b72= Te6edf3OptionPropertyTb4b4b4(Ta5d6ff"Ta5d6ffallTa5d6ff"Tb4b4b4, Te6edf3optionsTff7b72=Tb4b4b4[Ta5d6ff"Ta5d6ffallTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffdirsTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6fffilesTa5d6ff"Tb4b4b4]Tb4b4b4)
T8b949e"""
It can take the values 'all' 'dirs' 'files' - display only directories
or only files or both them. By default, it displays folders, and files.
Available options are: `'all'`, `'dirs'`, `'files'`.
:attr:`search` is an :class:`~kivy.properties.OptionProperty`
and defaults to `all`.
"""
Te6edf3current_path Tff7b72= Te6edf3StringPropertyTb4b4b4(Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffexpanduserTb4b4b4(Ta5d6ff"Ta5d6ff~Ta5d6ff"Tb4b4b4)Tb4b4b4)
T8b949e"""
Current directory.
:attr:`current_path` is an :class:`~kivy.properties.StringProperty`
and defaults to `os.path.expanduser("~")`.
"""
Te6edf3use_access Tff7b72= Te6edf3BooleanPropertyTb4b4b4(Tff7b72TrueTb4b4b4)
T8b949e"""
Show access to files and directories.
:attr:`use_access` is an :class:`~kivy.properties.BooleanProperty`
and defaults to `True`.
"""
Te6edf3preview Tff7b72= Te6edf3BooleanPropertyTb4b4b4(Tff7b72FalseTb4b4b4)
T8b949e"""
Shows only image previews.
:attr:`preview` is an :class:`~kivy.properties.BooleanProperty`
and defaults to `False`.
"""
Te6edf3show_hidden_files Tff7b72= Te6edf3BooleanPropertyTb4b4b4(Tff7b72FalseTb4b4b4)
T8b949e"""
Shows hidden files.
:attr:`show_hidden_files` is an :class:`~kivy.properties.BooleanProperty`
and defaults to `False`.
"""
Te6edf3sort_by Tff7b72= Te6edf3OptionPropertyTb4b4b4(
Ta5d6ff"Ta5d6ffnameTa5d6ff"Tb4b4b4, Te6edf3optionsTff7b72=Tb4b4b4[Ta5d6ff"Ta5d6ffnothingTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffnameTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffdateTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffsizeTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4]
Tb4b4b4)
T8b949e"""
It can take the values 'nothing' 'name' 'date' 'size' 'type' - sorts files
by option. By default, sort by name. Available options are:
`'nothing'`, `'name'`, `'date'`, `'size'`, `'type'`.
:attr:`sort_by` is an :class:`~kivy.properties.OptionProperty`
and defaults to `name`.
"""
Te6edf3sort_by_desc Tff7b72= Te6edf3BooleanPropertyTb4b4b4(Tff7b72FalseTb4b4b4)
T8b949e"""
Sort by descending.
:attr:`sort_by_desc` is an :class:`~kivy.properties.BooleanProperty`
and defaults to `False`.
"""
Te6edf3selector Tff7b72= Te6edf3OptionPropertyTb4b4b4(Ta5d6ff"Ta5d6ffanyTa5d6ff"Tb4b4b4, Te6edf3optionsTff7b72=Tb4b4b4[Ta5d6ff"Ta5d6ffanyTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6fffileTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6fffolderTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffmultiTa5d6ff"Tb4b4b4]Tb4b4b4)
T8b949e"""
It can take the values 'any' 'file' 'folder' 'multi'
By default, any.
Available options are: `'any'`, `'file'`, `'folder'`, `'multi'`.
:attr:`selector` is an :class:`~kivy.properties.OptionProperty`
and defaults to `any`.
"""
Te6edf3selection Tff7b72= Te6edf3ListPropertyTb4b4b4(Tb4b4b4)
T8b949e"""
Contains the list of files that are currently selected.
:attr:`selection` is a read-only :class:`~kivy.properties.ListProperty`
and defaults to `[]`.
"""
Te6edf3selection_button Tff7b72= Te6edf3ObjectPropertyTb4b4b4(Tb4b4b4)
T8b949e"""
The instance of the directory/path selection button.
.. versionadded:: 1.1.0
:attr:`selection_button` is a read-only :class:`~kivy.properties.ObjectProperty`
and defaults to `None`.
"""
Te6edf3_window_manager Tff7b72= Tff7b72None
Te6edf3_window_manager_open Tff7b72= Tff7b72False
Tff7b72def Tff7b72__init__Tb4b4b4(Tff7b72selfTb4b4b4, Tff7b72*Te6edf3argsTb4b4b4, Tff7b72*Tff7b72*Te6edf3kwargsTb4b4b4)Tb4b4b4:
Tffa657superTb4b4b4(Tb4b4b4)Tff7b72.Td2a8ff__init__Tb4b4b4(Tff7b72*Te6edf3argsTb4b4b4, Tff7b72*Tff7b72*Te6edf3kwargsTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffregister_event_typeTb4b4b4(Ta5d6ff"Ta5d6ffon_pre_openTa5d6ff"Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffregister_event_typeTb4b4b4(Ta5d6ff"Ta5d6ffon_openTa5d6ff"Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffregister_event_typeTb4b4b4(Ta5d6ff"Ta5d6ffon_pre_dismissTa5d6ff"Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffregister_event_typeTb4b4b4(Ta5d6ff"Ta5d6ffon_dismissTa5d6ff"Tb4b4b4)
Te6edf3toolbar_label Tff7b72= Tff7b72selfTff7b72.Td2a8ffidsTff7b72.Td2a8fftoolbarTff7b72.Td2a8ffchildrenTb4b4b4[T79c0ff1Tb4b4b4]Tff7b72.Td2a8ffchildrenTb4b4b4[T79c0ff0Tb4b4b4]
Te6edf3toolbar_labelTff7b72.Td2a8fffont_style Tff7b72= Ta5d6ff"Ta5d6ffSubtitle1Ta5d6ff"
Te6edf3ClockTff7b72.Td2a8ffschedule_onceTb4b4b4(Tff7b72selfTff7b72.Td2a8ff_create_selection_buttonTb4b4b4)
Tff7b72if Tff7b72selfTff7b72.Td2a8ffpreviewTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffext Tff7b72= Tb4b4b4[Ta5d6ff"Ta5d6ff.pngTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ff.jpgTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ff.jpegTa5d6ff"Tb4b4b4]
Tff7b72selfTff7b72.Td2a8ffdisks Tff7b72= Tb4b4b4[Tb4b4b4]
Tff7b72def Td2a8ffshow_disksTb4b4b4(Tff7b72selfTb4b4b4) Tff7b72-Tff7b72> Tff7b72NoneTb4b4b4:
Tff7b72if Te6edf3platform Tff7b72== Ta5d6ff"Ta5d6ffwinTa5d6ff"Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffdisks Tff7b72= Tffa657sortedTb4b4b4(
Te6edf3reTff7b72.Td2a8fffindallTb4b4b4(
Ta5d6ffrTa5d6ff"Ta5d6ff[A-Z]+:.*$Ta5d6ff"Tb4b4b4,
Te6edf3osTff7b72.Td2a8ffpopenTb4b4b4(Ta5d6ff"Ta5d6ffmountvol /Ta5d6ff"Tb4b4b4)Tff7b72.Td2a8ffreadTb4b4b4(Tb4b4b4)Tb4b4b4,
Te6edf3reTff7b72.Td2a8ffMULTILINETb4b4b4,
Tb4b4b4)
Tb4b4b4)
Tff7b72elif Te6edf3platform Tff7b72in Tb4b4b4[Ta5d6ff"Ta5d6fflinuxTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffandroidTa5d6ff"Tb4b4b4]Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffdisks Tff7b72= Tffa657sortedTb4b4b4(
Te6edf3reTff7b72.Td2a8fffindallTb4b4b4(
Ta5d6ffrTa5d6ff"Ta5d6ffonTa5d6ff\Ta5d6ffs(/.*)Ta5d6ff\Ta5d6ffstypeTa5d6ff"Tb4b4b4,
Te6edf3osTff7b72.Td2a8ffpopenTb4b4b4(Ta5d6ff"Ta5d6ffmountTa5d6ff"Tb4b4b4)Tff7b72.Td2a8ffreadTb4b4b4(Tb4b4b4)Tb4b4b4,
Tb4b4b4)
Tb4b4b4)
Tff7b72elif Te6edf3platform Tff7b72== Ta5d6ff"Ta5d6ffmacosxTa5d6ff"Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffdisks Tff7b72= Tffa657sortedTb4b4b4(
Te6edf3reTff7b72.Td2a8fffindallTb4b4b4(
Ta5d6ffrTa5d6ff"Ta5d6ffonTa5d6ff\Ta5d6ffs(/.*)Ta5d6ff\Ta5d6ffsTa5d6ff\Ta5d6ff(Ta5d6ff"Tb4b4b4,
Te6edf3osTff7b72.Td2a8ffpopenTb4b4b4(Ta5d6ff"Ta5d6ffmountTa5d6ff"Tb4b4b4)Tff7b72.Td2a8ffreadTb4b4b4(Tb4b4b4)Tb4b4b4,
Tb4b4b4)
Tb4b4b4)
Tff7b72elseTb4b4b4:
Tff7b72return
Tff7b72selfTff7b72.Td2a8ffcurrent_path Tff7b72= Ta5d6ff"Ta5d6ff"
Te6edf3manager_list Tff7b72= Tb4b4b4[Tb4b4b4]
Tff7b72for Te6edf3disk Tff7b72in Tff7b72selfTff7b72.Td2a8ffdisksTb4b4b4:
Te6edf3access_string Tff7b72= Tff7b72selfTff7b72.Td2a8ffget_access_stringTb4b4b4(Te6edf3diskTb4b4b4)
Tff7b72if Ta5d6ff"Ta5d6ffrTa5d6ff" Tff7b72not Tff7b72in Te6edf3access_stringTb4b4b4:
Te6edf3icon Tff7b72= Ta5d6ff"Ta5d6ffharddisk-removeTa5d6ff"
Tff7b72elseTb4b4b4:
Te6edf3icon Tff7b72= Ta5d6ff"Ta5d6ffharddiskTa5d6ff"
Te6edf3manager_listTff7b72.Td2a8ffappendTb4b4b4(
Tb4b4b4{
Ta5d6ff"Ta5d6ffviewclassTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffBodyManagerTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffpathTa5d6ff"Tb4b4b4: Te6edf3diskTb4b4b4,
Ta5d6ff"Ta5d6fficonTa5d6ff"Tb4b4b4: Te6edf3iconTb4b4b4,
Ta5d6ff"Ta5d6ffdir_or_file_nameTa5d6ff"Tb4b4b4: Te6edf3diskTb4b4b4,
Ta5d6ff"Ta5d6ffevents_callbackTa5d6ff"Tb4b4b4: Tff7b72selfTff7b72.Td2a8ffselect_dir_or_fileTb4b4b4,
Ta5d6ff"Ta5d6ff_selectedTa5d6ff"Tb4b4b4: Tff7b72FalseTb4b4b4,
Tb4b4b4}
Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffidsTff7b72.Td2a8ffrvTff7b72.Td2a8ffdata Tff7b72= Te6edf3manager_list
Tff7b72selfTff7b72.Td2a8ff_showTb4b4b4(Tb4b4b4)
Tff7b72def Td2a8ffshowTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3pathTb4b4b4: Tffa657strTb4b4b4) Tff7b72-Tff7b72> Tff7b72NoneTb4b4b4:
T8b949e"""
Forms the body of a directory tree.
:param path:
The path to the directory that will be opened in the file manager.
"""
Tff7b72selfTff7b72.Td2a8ffcurrent_path Tff7b72= Te6edf3path
Tff7b72selfTff7b72.Td2a8ffselection Tff7b72= Tb4b4b4[Tb4b4b4]
Te6edf3dirsTb4b4b4, Te6edf3files Tff7b72= Tff7b72selfTff7b72.Td2a8ffget_contentTb4b4b4(Tb4b4b4)
Te6edf3manager_list Tff7b72= Tb4b4b4[Tb4b4b4]
Tff7b72if Te6edf3dirs Tff7b72== Tb4b4b4[Tb4b4b4] Tff7b72and Te6edf3files Tff7b72== Tb4b4b4[Tb4b4b4]Tb4b4b4: T8b949e# selected directory
Tff7b72pass
Tff7b72elif Tff7b72not Te6edf3dirs Tff7b72and Tff7b72not Te6edf3filesTb4b4b4: T8b949e# directory is unavailable
Tff7b72return
Tff7b72if Tff7b72selfTff7b72.Td2a8ffpreviewTb4b4b4:
Tff7b72for Te6edf3name_dir Tff7b72in Tff7b72selfTff7b72.Td2a8ff__sort_filesTb4b4b4(Te6edf3dirsTb4b4b4)Tb4b4b4:
Te6edf3manager_listTff7b72.Td2a8ffappendTb4b4b4(
Tb4b4b4{
Ta5d6ff"Ta5d6ffviewclassTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffBodyManagerWithPreviewTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffpathTa5d6ff"Tb4b4b4: Tff7b72selfTff7b72.Td2a8fficon_folderTb4b4b4,
Ta5d6ff"Ta5d6ffrealpathTa5d6ff"Tb4b4b4: Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffjoinTb4b4b4(Te6edf3pathTb4b4b4)Tb4b4b4,
Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6fffolderTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffnameTa5d6ff"Tb4b4b4: Te6edf3name_dirTb4b4b4,
Ta5d6ff"Ta5d6ffevents_callbackTa5d6ff"Tb4b4b4: Tff7b72selfTff7b72.Td2a8ffselect_dir_or_fileTb4b4b4,
Ta5d6ff"Ta5d6ffheightTa5d6ff"Tb4b4b4: Te6edf3dpTb4b4b4(T79c0ff150Tb4b4b4)Tb4b4b4,
Ta5d6ff"Ta5d6ff_selectedTa5d6ff"Tb4b4b4: Tff7b72FalseTb4b4b4,
Tb4b4b4}
Tb4b4b4)
Tff7b72for Te6edf3name_file Tff7b72in Tff7b72selfTff7b72.Td2a8ff__sort_filesTb4b4b4(Te6edf3filesTb4b4b4)Tb4b4b4:
Tff7b72if Tb4b4b4(
Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffsplitextTb4b4b4(Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffjoinTb4b4b4(Te6edf3pathTb4b4b4, Te6edf3name_fileTb4b4b4)Tb4b4b4)Tb4b4b4[T79c0ff1Tb4b4b4]
Tff7b72in Tff7b72selfTff7b72.Td2a8ffext
Tb4b4b4)Tb4b4b4:
Te6edf3manager_listTff7b72.Td2a8ffappendTb4b4b4(
Tb4b4b4{
Ta5d6ff"Ta5d6ffviewclassTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffBodyManagerWithPreviewTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffpathTa5d6ff"Tb4b4b4: Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffjoinTb4b4b4(Te6edf3pathTb4b4b4, Te6edf3name_fileTb4b4b4)Tb4b4b4,
Ta5d6ff"Ta5d6ffnameTa5d6ff"Tb4b4b4: Te6edf3name_fileTb4b4b4,
Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6fffilesTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffevents_callbackTa5d6ff"Tb4b4b4: Tff7b72selfTff7b72.Td2a8ffselect_dir_or_fileTb4b4b4,
Ta5d6ff"Ta5d6ffheightTa5d6ff"Tb4b4b4: Te6edf3dpTb4b4b4(T79c0ff150Tb4b4b4)Tb4b4b4,
Ta5d6ff"Ta5d6ff_selectedTa5d6ff"Tb4b4b4: Tff7b72FalseTb4b4b4,
Tb4b4b4}
Tb4b4b4)
Tff7b72elseTb4b4b4:
Tff7b72for Te6edf3name Tff7b72in Tff7b72selfTff7b72.Td2a8ff__sort_filesTb4b4b4(Te6edf3dirsTb4b4b4)Tb4b4b4:
Te6edf3_path Tff7b72= Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffjoinTb4b4b4(Te6edf3pathTb4b4b4, Te6edf3nameTb4b4b4)
Te6edf3access_string Tff7b72= Tff7b72selfTff7b72.Td2a8ffget_access_stringTb4b4b4(Te6edf3_pathTb4b4b4)
Tff7b72if Ta5d6ff"Ta5d6ffrTa5d6ff" Tff7b72not Tff7b72in Te6edf3access_stringTb4b4b4:
Te6edf3icon Tff7b72= Ta5d6ff"Ta5d6fffolder-lockTa5d6ff"
Tff7b72elseTb4b4b4:
Te6edf3icon Tff7b72= Ta5d6ff"Ta5d6fffolderTa5d6ff"
Te6edf3manager_listTff7b72.Td2a8ffappendTb4b4b4(
Tb4b4b4{
Ta5d6ff"Ta5d6ffviewclassTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffBodyManagerTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffpathTa5d6ff"Tb4b4b4: Te6edf3_pathTb4b4b4,
Ta5d6ff"Ta5d6fficonTa5d6ff"Tb4b4b4: Te6edf3iconTb4b4b4,
Ta5d6ff"Ta5d6ffdir_or_file_nameTa5d6ff"Tb4b4b4: Te6edf3nameTb4b4b4,
Ta5d6ff"Ta5d6ffevents_callbackTa5d6ff"Tb4b4b4: Tff7b72selfTff7b72.Td2a8ffselect_dir_or_fileTb4b4b4,
Ta5d6ff"Ta5d6fficon_colorTa5d6ff"Tb4b4b4: Tff7b72selfTff7b72.Td2a8fftheme_clsTff7b72.Td2a8ffprimary_color
Tff7b72if Tff7b72not Tff7b72selfTff7b72.Td2a8fficon_color
Tff7b72else Tff7b72selfTff7b72.Td2a8fficon_colorTb4b4b4,
Ta5d6ff"Ta5d6ff_selectedTa5d6ff"Tb4b4b4: Tff7b72FalseTb4b4b4,
Tb4b4b4}
Tb4b4b4)
Tff7b72for Te6edf3name Tff7b72in Tff7b72selfTff7b72.Td2a8ff__sort_filesTb4b4b4(Te6edf3filesTb4b4b4)Tb4b4b4:
Tff7b72if Tff7b72selfTff7b72.Td2a8ffext Tff7b72and Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffsplitextTb4b4b4(Te6edf3nameTb4b4b4)Tb4b4b4[T79c0ff1Tb4b4b4] Tff7b72not Tff7b72in Tff7b72selfTff7b72.Td2a8ffextTb4b4b4:
Tff7b72continue
Te6edf3manager_listTff7b72.Td2a8ffappendTb4b4b4(
Tb4b4b4{
Ta5d6ff"Ta5d6ffviewclassTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffBodyManagerTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffpathTa5d6ff"Tb4b4b4: Te6edf3nameTb4b4b4,
Ta5d6ff"Ta5d6fficonTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6fffile-outlineTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffdir_or_file_nameTa5d6ff"Tb4b4b4: Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffsplitTb4b4b4(Te6edf3nameTb4b4b4)Tb4b4b4[T79c0ff1Tb4b4b4]Tb4b4b4,
Ta5d6ff"Ta5d6ffevents_callbackTa5d6ff"Tb4b4b4: Tff7b72selfTff7b72.Td2a8ffselect_dir_or_fileTb4b4b4,
Ta5d6ff"Ta5d6fficon_colorTa5d6ff"Tb4b4b4: Tff7b72selfTff7b72.Td2a8fftheme_clsTff7b72.Td2a8ffprimary_color
Tff7b72if Tff7b72not Tff7b72selfTff7b72.Td2a8fficon_color
Tff7b72else Tff7b72selfTff7b72.Td2a8fficon_colorTb4b4b4,
Ta5d6ff"Ta5d6ff_selectedTa5d6ff"Tb4b4b4: Tff7b72FalseTb4b4b4,
Tb4b4b4}
Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffidsTff7b72.Td2a8ffrvTff7b72.Td2a8ffdata Tff7b72= Te6edf3manager_list
Tff7b72selfTff7b72.Td2a8ff_showTb4b4b4(Tb4b4b4)
Tff7b72def Td2a8ffget_access_stringTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3pathTb4b4b4: Tffa657strTb4b4b4) Tff7b72-Tff7b72> Tffa657strTb4b4b4:
Te6edf3access_string Tff7b72= Ta5d6ff"Ta5d6ff"
Tff7b72if Tff7b72selfTff7b72.Td2a8ffuse_accessTb4b4b4:
Te6edf3access_data Tff7b72= Tb4b4b4{Ta5d6ff"Ta5d6ffrTa5d6ff"Tb4b4b4: Te6edf3osTff7b72.Td2a8ffR_OKTb4b4b4, Ta5d6ff"Ta5d6ffwTa5d6ff"Tb4b4b4: Te6edf3osTff7b72.Td2a8ffW_OKTb4b4b4, Ta5d6ff"Ta5d6ffxTa5d6ff"Tb4b4b4: Te6edf3osTff7b72.Td2a8ffX_OKTb4b4b4}
Tff7b72for Te6edf3access Tff7b72in Te6edf3access_dataTff7b72.Td2a8ffkeysTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3access_string Tff7b72+Tff7b72= Tb4b4b4(
Te6edf3access Tff7b72if Te6edf3osTff7b72.Td2a8ffaccessTb4b4b4(Te6edf3pathTb4b4b4, Te6edf3access_dataTb4b4b4[Te6edf3accessTb4b4b4]Tb4b4b4) Tff7b72else Ta5d6ff"Ta5d6ff-Ta5d6ff"
Tb4b4b4)
Tff7b72return Te6edf3access_string
Tff7b72def Td2a8ffget_contentTb4b4b4(
Tff7b72selfTb4b4b4,
Tb4b4b4) Tff7b72-Tff7b72> Te6edf3UnionTb4b4b4[Te6edf3TupleTb4b4b4[Te6edf3ListTb4b4b4[Tffa657strTb4b4b4]Tb4b4b4, Te6edf3ListTb4b4b4[Tffa657strTb4b4b4]Tb4b4b4]Tb4b4b4, Te6edf3TupleTb4b4b4[Tff7b72NoneTb4b4b4, Tff7b72NoneTb4b4b4]Tb4b4b4]Tb4b4b4:
T8b949e"""Returns a list of the type [[Folder List], [file list]]."""
Tff7b72tryTb4b4b4:
Te6edf3files Tff7b72= Tb4b4b4[Tb4b4b4]
Te6edf3dirs Tff7b72= Tb4b4b4[Tb4b4b4]
Tff7b72for Te6edf3content Tff7b72in Te6edf3osTff7b72.Td2a8fflistdirTb4b4b4(Tff7b72selfTff7b72.Td2a8ffcurrent_pathTb4b4b4)Tb4b4b4:
Tff7b72if Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffisdirTb4b4b4(Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffjoinTb4b4b4(Tff7b72selfTff7b72.Td2a8ffcurrent_pathTb4b4b4, Te6edf3contentTb4b4b4)Tb4b4b4)Tb4b4b4:
Tff7b72if Tff7b72selfTff7b72.Td2a8ffsearch Tff7b72== Ta5d6ff"Ta5d6ffallTa5d6ff" Tff7b72or Tff7b72selfTff7b72.Td2a8ffsearch Tff7b72== Ta5d6ff"Ta5d6ffdirsTa5d6ff"Tb4b4b4:
Tff7b72if Tb4b4b4(Tff7b72not Tff7b72selfTff7b72.Td2a8ffshow_hidden_filesTb4b4b4) Tff7b72and Tb4b4b4(
Te6edf3contentTff7b72.Td2a8ffstartswithTb4b4b4(Ta5d6ff"Ta5d6ff.Ta5d6ff"Tb4b4b4)
Tb4b4b4)Tb4b4b4:
Tff7b72continue
Tff7b72elseTb4b4b4:
Te6edf3dirsTff7b72.Td2a8ffappendTb4b4b4(Te6edf3contentTb4b4b4)
Tff7b72elseTb4b4b4:
Tff7b72if Tff7b72selfTff7b72.Td2a8ffsearch Tff7b72== Ta5d6ff"Ta5d6ffallTa5d6ff" Tff7b72or Tff7b72selfTff7b72.Td2a8ffsearch Tff7b72== Ta5d6ff"Ta5d6fffilesTa5d6ff"Tb4b4b4:
Tff7b72if Tffa657lenTb4b4b4(Tff7b72selfTff7b72.Td2a8ffextTb4b4b4) Tff7b72!= T79c0ff0Tb4b4b4:
Tff7b72tryTb4b4b4:
Te6edf3filesTff7b72.Td2a8ffappendTb4b4b4(
Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffjoinTb4b4b4(Tff7b72selfTff7b72.Td2a8ffcurrent_pathTb4b4b4, Te6edf3contentTb4b4b4)
Tb4b4b4)
Tff7b72except Tf85149IndexErrorTb4b4b4:
Tff7b72pass
Tff7b72elseTb4b4b4:
Tff7b72if Tb4b4b4(
Tff7b72not Tff7b72selfTff7b72.Td2a8ffshow_hidden_files
Tff7b72and Te6edf3contentTff7b72.Td2a8ffstartswithTb4b4b4(Ta5d6ff"Ta5d6ff.Ta5d6ff"Tb4b4b4)
Tb4b4b4)Tb4b4b4:
Tff7b72continue
Tff7b72elseTb4b4b4:
Te6edf3filesTff7b72.Td2a8ffappendTb4b4b4(Te6edf3contentTb4b4b4)
Tff7b72return Te6edf3dirsTb4b4b4, Te6edf3files
Tff7b72except Tf85149OSError Tff7b72as Te6edf3eTb4b4b4:
Tffa657printTb4b4b4(Ta5d6ff"Ta5d6ffFilemanager OSError: Ta5d6ff"Tff7b72+Tffa657strTb4b4b4(Te6edf3eTb4b4b4)Tb4b4b4)
Tff7b72return Tff7b72NoneTb4b4b4, Tff7b72None
Tff7b72def Td2a8ffcloseTb4b4b4(Tff7b72selfTb4b4b4) Tff7b72-Tff7b72> Tff7b72NoneTb4b4b4:
T8b949e"""Closes the file manager window."""
Tff7b72selfTff7b72.Td2a8ffdispatchTb4b4b4(Ta5d6ff"Ta5d6ffon_pre_dismissTa5d6ff"Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ff_window_managerTff7b72.Td2a8ffdismissTb4b4b4(Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffdispatchTb4b4b4(Ta5d6ff"Ta5d6ffon_dismissTa5d6ff"Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ff_window_manager_open Tff7b72= Tff7b72False
Tff7b72def Td2a8ffselect_dir_or_fileTb4b4b4(
Tff7b72selfTb4b4b4,
Te6edf3pathTb4b4b4: Tffa657strTb4b4b4,
Te6edf3widgetTb4b4b4: Te6edf3UnionTb4b4b4[Te6edf3BodyManagerWithPreviewTb4b4b4, Te6edf3FactoryTff7b72.Td2a8ffBodyManagerTb4b4b4]Tb4b4b4,
Tb4b4b4)Tb4b4b4:
T8b949e"""Called by tap on the name of the directory or file."""
Tff7b72if Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffisfileTb4b4b4(Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffjoinTb4b4b4(Tff7b72selfTff7b72.Td2a8ffcurrent_pathTb4b4b4, Te6edf3pathTb4b4b4)Tb4b4b4)Tb4b4b4:
Tff7b72if Tff7b72selfTff7b72.Td2a8ffselector Tff7b72== Ta5d6ff"Ta5d6ffmultiTa5d6ff"Tb4b4b4:
Te6edf3file_path Tff7b72= Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffjoinTb4b4b4(Tff7b72selfTff7b72.Td2a8ffcurrent_pathTb4b4b4, Te6edf3pathTb4b4b4)
Tff7b72if Te6edf3file_path Tff7b72in Tff7b72selfTff7b72.Td2a8ffselectionTb4b4b4:
Te6edf3widgetTff7b72.Td2a8ff_selected Tff7b72= Tff7b72False
Tff7b72selfTff7b72.Td2a8ffselectionTff7b72.Td2a8ffremoveTb4b4b4(Te6edf3file_pathTb4b4b4)
Tff7b72elseTb4b4b4:
Te6edf3widgetTff7b72.Td2a8ff_selected Tff7b72= Tff7b72True
Tff7b72selfTff7b72.Td2a8ffselectionTff7b72.Td2a8ffappendTb4b4b4(Te6edf3file_pathTb4b4b4)
Tff7b72elif Tff7b72selfTff7b72.Td2a8ffselector Tff7b72== Ta5d6ff"Ta5d6fffolderTa5d6ff"Tb4b4b4:
Tff7b72return
Tff7b72elseTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffselect_pathTb4b4b4(Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffjoinTb4b4b4(Tff7b72selfTff7b72.Td2a8ffcurrent_pathTb4b4b4, Te6edf3pathTb4b4b4)Tb4b4b4)
Tff7b72elseTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffcurrent_path Tff7b72= Te6edf3path
Tff7b72selfTff7b72.Td2a8ffshowTb4b4b4(Te6edf3pathTb4b4b4)
Tff7b72def Td2a8ffbackTb4b4b4(Tff7b72selfTb4b4b4) Tff7b72-Tff7b72> Tff7b72NoneTb4b4b4:
T8b949e"""Returning to the branch down in the directory tree."""
Te6edf3pathTb4b4b4, Te6edf3end Tff7b72= Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffsplitTb4b4b4(Tff7b72selfTff7b72.Td2a8ffcurrent_pathTb4b4b4)
Tff7b72if Tff7b72selfTff7b72.Td2a8ffcurrent_path Tff7b72and Te6edf3path Tff7b72== Tff7b72selfTff7b72.Td2a8ffcurrent_pathTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffshow_disksTb4b4b4(Tb4b4b4)
Tff7b72elseTb4b4b4:
Tff7b72if Tff7b72not Te6edf3endTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffcloseTb4b4b4(Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffexit_managerTb4b4b4(T79c0ff1Tb4b4b4)
Tff7b72elseTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffshowTb4b4b4(Te6edf3pathTb4b4b4)
Tff7b72def Td2a8ffselect_directory_on_press_buttonTb4b4b4(Tff7b72selfTb4b4b4, Tff7b72*Te6edf3argsTb4b4b4) Tff7b72-Tff7b72> Tff7b72NoneTb4b4b4:
T8b949e"""Called when a click on a floating button."""
Tff7b72if Tff7b72selfTff7b72.Td2a8ffselector Tff7b72== Ta5d6ff"Ta5d6ffmultiTa5d6ff"Tb4b4b4:
Tff7b72if Tffa657lenTb4b4b4(Tff7b72selfTff7b72.Td2a8ffselectionTb4b4b4) Tff7b72> T79c0ff0Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffselect_pathTb4b4b4(Tff7b72selfTff7b72.Td2a8ffselectionTb4b4b4)
Tff7b72elseTb4b4b4:
Tff7b72if Tff7b72selfTff7b72.Td2a8ffselector Tff7b72== Ta5d6ff"Ta5d6fffolderTa5d6ff" Tff7b72or Tff7b72selfTff7b72.Td2a8ffselector Tff7b72== Ta5d6ff"Ta5d6ffanyTa5d6ff"Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffselect_pathTb4b4b4(Tff7b72selfTff7b72.Td2a8ffcurrent_pathTb4b4b4)
Tff7b72def Td2a8ffon_iconTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3instance_file_managerTb4b4b4, Te6edf3icon_nameTb4b4b4: Tffa657strTb4b4b4) Tff7b72-Tff7b72> Tff7b72NoneTb4b4b4:
T8b949e"""Called when the :attr:`icon` property is changed."""
Tff7b72selfTff7b72.Td2a8fficon_selection_button Tff7b72= Te6edf3icon_name
Tff7b72def Td2a8ffon_background_color_toolbarTb4b4b4(
Tff7b72selfTb4b4b4, Te6edf3instance_file_managerTb4b4b4, Te6edf3colorTb4b4b4: Te6edf3UnionTb4b4b4[Tffa657strTb4b4b4, Tffa657listTb4b4b4]
Tb4b4b4) Tff7b72-Tff7b72> Tff7b72NoneTb4b4b4:
T8b949e"""
Called when the :attr:`background_color_toolbar` property is changed.
"""
Tff7b72def Td2a8ffon_background_color_toolbarTb4b4b4(Tff7b72*Te6edf3argsTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffidsTff7b72.Td2a8fftoolbarTff7b72.Td2a8ffmd_bg_color Tff7b72= Te6edf3color
Te6edf3ClockTff7b72.Td2a8ffschedule_onceTb4b4b4(Te6edf3on_background_color_toolbarTb4b4b4)
Tff7b72def Td2a8ffon_pre_openTb4b4b4(Tff7b72selfTb4b4b4, Tff7b72*Te6edf3argsTb4b4b4)Tb4b4b4:
T8b949e"""
Default pre-open event handler.
.. versionadded:: 1.1.0
"""
Tff7b72def Td2a8ffon_openTb4b4b4(Tff7b72selfTb4b4b4, Tff7b72*Te6edf3argsTb4b4b4)Tb4b4b4:
T8b949e"""
Default open event handler.
.. versionadded:: 1.1.0
"""
Tff7b72def Td2a8ffon_pre_dismissTb4b4b4(Tff7b72selfTb4b4b4, Tff7b72*Te6edf3argsTb4b4b4)Tb4b4b4:
T8b949e"""
Default pre-dismiss event handler.
.. versionadded:: 1.1.0
"""
Tff7b72def Td2a8ffon_dismissTb4b4b4(Tff7b72selfTb4b4b4, Tff7b72*Te6edf3argsTb4b4b4)Tb4b4b4:
T8b949e"""
Default dismiss event handler.
.. versionadded:: 1.1.0
"""
Tff7b72def Td2a8ff_showTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72if Tff7b72not Tff7b72selfTff7b72.Td2a8ff_window_managerTb4b4b4:
Tff7b72selfTff7b72.Td2a8ff_window_manager Tff7b72= Te6edf3ModalViewTb4b4b4(
Te6edf3size_hintTff7b72=Tff7b72selfTff7b72.Td2a8ffsize_hintTb4b4b4, Te6edf3auto_dismissTff7b72=Tff7b72False
Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffsize_hint Tff7b72= Tb4b4b4(T79c0ff1Tb4b4b4, T79c0ff1Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ff_window_managerTff7b72.Td2a8ffadd_widgetTb4b4b4(Tff7b72selfTb4b4b4)
Tff7b72if Tff7b72not Tff7b72selfTff7b72.Td2a8ff_window_manager_openTb4b4b4:
Tff7b72selfTff7b72.Td2a8ff_window_managerTff7b72.Td2a8ffopenTb4b4b4(Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ff_window_manager_open Tff7b72= Tff7b72True
Tff7b72selfTff7b72.Td2a8ffdispatchTb4b4b4(Ta5d6ff"Ta5d6ffon_pre_openTa5d6ff"Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffdispatchTb4b4b4(Ta5d6ff"Ta5d6ffon_openTa5d6ff"Tb4b4b4)
Tff7b72def Td2a8ff_create_selection_buttonTb4b4b4(Tff7b72selfTb4b4b4, Tff7b72*Te6edf3argsTb4b4b4)Tb4b4b4:
Tff7b72if Tb4b4b4(
Tff7b72selfTff7b72.Td2a8ffselector Tff7b72== Ta5d6ff"Ta5d6ffanyTa5d6ff"
Tff7b72or Tff7b72selfTff7b72.Td2a8ffselector Tff7b72== Ta5d6ff"Ta5d6ffmultiTa5d6ff"
Tff7b72or Tff7b72selfTff7b72.Td2a8ffselector Tff7b72== Ta5d6ff"Ta5d6fffolderTa5d6ff"
Tb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffselection_button Tff7b72= Te6edf3MDFloatingActionButtonTb4b4b4(
Te6edf3on_releaseTff7b72=Tff7b72selfTff7b72.Td2a8ffselect_directory_on_press_buttonTb4b4b4,
Te6edf3md_bg_colorTff7b72=Tff7b72selfTff7b72.Td2a8fftheme_clsTff7b72.Td2a8ffprimary_color
Tff7b72if Tff7b72not Tff7b72selfTff7b72.Td2a8ffbackground_color_selection_button
Tff7b72else Tff7b72selfTff7b72.Td2a8ffbackground_color_selection_buttonTb4b4b4,
Te6edf3iconTff7b72=Tff7b72selfTff7b72.Td2a8fficon_selection_buttonTb4b4b4,
Te6edf3pos_hintTff7b72=Tb4b4b4{Ta5d6ff"Ta5d6ffrightTa5d6ff"Tb4b4b4: T79c0ff0.99Tb4b4b4}Tb4b4b4,
Te6edf3yTff7b72=Te6edf3dpTb4b4b4(T79c0ff12Tb4b4b4)Tb4b4b4,
Te6edf3elevationTff7b72=T79c0ff0Tb4b4b4,
Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffadd_widgetTb4b4b4(Tff7b72selfTff7b72.Td2a8ffselection_buttonTb4b4b4)
Tff7b72def Td2a8ff__sort_filesTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3filesTb4b4b4)Tb4b4b4:
Tff7b72def Td2a8ffsort_by_nameTb4b4b4(Te6edf3filesTb4b4b4)Tb4b4b4:
Te6edf3filesTff7b72.Td2a8ffsortTb4b4b4(Te6edf3keyTff7b72=Te6edf3localeTff7b72.Td2a8ffstrxfrmTb4b4b4)
Te6edf3filesTff7b72.Td2a8ffsortTb4b4b4(Te6edf3keyTff7b72=Tffa657strTff7b72.Td2a8ffcasefoldTb4b4b4)
Tff7b72return Te6edf3files
Tff7b72if Tff7b72selfTff7b72.Td2a8ffsort_by Tff7b72== Ta5d6ff"Ta5d6ffnameTa5d6ff"Tb4b4b4:
Te6edf3sorted_files Tff7b72= Te6edf3sort_by_nameTb4b4b4(Te6edf3filesTb4b4b4)
Tff7b72elif Tff7b72selfTff7b72.Td2a8ffsort_by Tff7b72== Ta5d6ff"Ta5d6ffdateTa5d6ff"Tb4b4b4:
Te6edf3_files Tff7b72= Te6edf3sort_by_nameTb4b4b4(Te6edf3filesTb4b4b4)
Te6edf3_sorted_files Tff7b72= Tb4b4b4[Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffjoinTb4b4b4(Tff7b72selfTff7b72.Td2a8ffcurrent_pathTb4b4b4, Te6edf3fTb4b4b4) Tff7b72for Te6edf3f Tff7b72in Te6edf3_filesTb4b4b4]
Te6edf3_sorted_filesTff7b72.Td2a8ffsortTb4b4b4(Te6edf3keyTff7b72=Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffgetmtimeTb4b4b4, Te6edf3reverseTff7b72=Tff7b72TrueTb4b4b4)
Te6edf3sorted_files Tff7b72= Tb4b4b4[Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffbasenameTb4b4b4(Te6edf3fTb4b4b4) Tff7b72for Te6edf3f Tff7b72in Te6edf3_sorted_filesTb4b4b4]
Tff7b72elif Tff7b72selfTff7b72.Td2a8ffsort_by Tff7b72== Ta5d6ff"Ta5d6ffsizeTa5d6ff"Tb4b4b4:
Te6edf3_files Tff7b72= Te6edf3sort_by_nameTb4b4b4(Te6edf3filesTb4b4b4)
Te6edf3_sorted_files Tff7b72= Tb4b4b4[Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffjoinTb4b4b4(Tff7b72selfTff7b72.Td2a8ffcurrent_pathTb4b4b4, Te6edf3fTb4b4b4) Tff7b72for Te6edf3f Tff7b72in Te6edf3_filesTb4b4b4]
Te6edf3_sorted_filesTff7b72.Td2a8ffsortTb4b4b4(Te6edf3keyTff7b72=Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffgetsizeTb4b4b4, Te6edf3reverseTff7b72=Tff7b72TrueTb4b4b4)
Te6edf3sorted_files Tff7b72= Tb4b4b4[Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffbasenameTb4b4b4(Te6edf3fTb4b4b4) Tff7b72for Te6edf3f Tff7b72in Te6edf3_sorted_filesTb4b4b4]
Tff7b72elif Tff7b72selfTff7b72.Td2a8ffsort_by Tff7b72== Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4:
Te6edf3_files Tff7b72= Te6edf3sort_by_nameTb4b4b4(Te6edf3filesTb4b4b4)
Te6edf3sorted_files Tff7b72= Tffa657sortedTb4b4b4(
Te6edf3_filesTb4b4b4,
Te6edf3keyTff7b72=Tff7b72lambda Te6edf3fTb4b4b4: Tb4b4b4(Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffsplitextTb4b4b4(Te6edf3fTb4b4b4)Tb4b4b4[T79c0ff1Tb4b4b4]Tb4b4b4, Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffsplitextTb4b4b4(Te6edf3fTb4b4b4)Tb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4)Tb4b4b4,
Tb4b4b4)
Tff7b72elseTb4b4b4:
Te6edf3sorted_files Tff7b72= Te6edf3files
Tff7b72if Tff7b72selfTff7b72.Td2a8ffsort_by_descTb4b4b4:
Te6edf3sorted_filesTff7b72.Td2a8ffreverseTb4b4b4(Tb4b4b4)
Tff7b72return Te6edf3sorted_files
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────